﻿// src/crudOption/service/contentList.js
export default () => {
  /* -------------------- 搜索配置（与接口文档对齐，保持不变） -------------------- */
  const searchOption = ref({
    formConfig: {
      title: {
        label: "内容标题",
        component: "el-input",
        placeholder: "请输入内容标题",
        clearable: true,
        enterToSearch: true,
      },
      createTime: {
        label: "新增时间",
        component: "el-date-picker",
        type: "daterange",
        format: "YYYY-MM-DD",
        valueFormat: "YYYY-MM-DD",
        startPlaceholder: "开始日期",
        endPlaceholder: "结束日期",
        unlinkPanels: true,
        rangeSeparator: " ~ ",
        clearable: true,
      },
      sendTime: {
        label: "发送时间",
        component: "el-date-picker",
        type: "daterange",
        format: "YYYY-MM-DD",
        valueFormat: "YYYY-MM-DD",
        startPlaceholder: "开始日期",
        endPlaceholder: "结束日期",
        unlinkPanels: true,
        rangeSeparator: " ~ ",
        clearable: true,
      },
      updateTime: {
        label: "编辑时间",
        component: "el-date-picker",
        type: "daterange",
        format: "YYYY-MM-DD",
        valueFormat: "YYYY-MM-DD",
        startPlaceholder: "开始日期",
        endPlaceholder: "结束日期",
        unlinkPanels: true,
        rangeSeparator: " ~ ",
        clearable: true,
      },
      // 由页面根据“一级类目 Tabs”动态注入
      categoryId: {
        label: "类目",
        component: "el-cascader",
        placeholder: "全部",
        clearable: true,
        filterable: true,
        // 选项由页面在切换一级类目时动态注入
        dicData: [],
        // 注意：children 一定要指定；emitPath = true 方便页面取“最后一级”
        dicProps: {
          value: "id",
          label: "categoryName",
          children: "children",
          checkStrictly: true, // 可选：允许任意层级选择
          emitPath: true, // 返回 [L1, L2, L3]
        },
      },
      updateName: {
        label: "操作人员",
        component: "el-input",
        placeholder: "请输入操作人员",
        clearable: true,
      },
      // 字典：发送状态
      sendStatus: {
        label: "发送状态",
        component: "el-select",
        clearable: true,
        filterable: true,
        placeholder: "全部",

        dicUrl: "/support-backend/dict/listChildrenByDictCode",
        dicQuery: { dictCode: "qingyun.support.serviceCenter.sendStatus" },

        dicFormatter: res => {
          const list = Array.isArray(res.data) ? res.data : [];
          return list.map(i => ({ label: i.dictLabel, value: i.dictValue }));
        },

        // 这里就用默认的 label/value（因为上面已映射）
        dicProps: { label: "label", value: "value" },
      },
      // 字典：展示状态（如果后端暂未返回，可只用作搜索条件）
      displayStatus: {
        label: "展示状态",
        component: "el-select",
        clearable: true,
        filterable: true,
        placeholder: "全部",

        dicUrl: "/support-backend/dict/listChildrenByDictCode",
        dicQuery: { dictCode: "qingyun.support.serviceCenter.dispalyStatus" }, // 按文档拼写
        dicFormatter: res => {
          const list = Array.isArray(res.data) ? res.data : [];
          return list.map(i => ({ label: i.dictLabel, value: i.dictValue }));
        },

        // 这里就用默认的 label/value（因为上面已映射）
        dicProps: { label: "label", value: "value" },
      },
    },
  });

  /* -------------------- 表格/表单（按接口字段对齐） -------------------- */
  const tableOption = ref(
    Utils.tools.deleteSearchConfig({
      addTitle: "新增内容",
      editTitle: "编辑内容",
      dialogWidth: "720px",
      align: "left",
      menu: true,
      editBtn: false,
      delBtn: false,
      // 菜单宽度 单个按钮 52px 按钮容器内边距 8px 例如：4个按钮 = 52 * 4 * 8
      menuWidth: 52 * 3 + 8,
      column: {
        // 隐藏主键
        id: {
          label: "ID",
          hide: true,
          addDisplay: false,
          editDisplay: false,
        },

        // 标题：接口字段 title
        title: {
          label: "内容标题",
          minWidth: 120,
          span: 24,
          placeholder: "请输入内容标题",
          rules: [
            { required: true, message: "请输入内容标题", trigger: "blur" },
            { max: 100, message: "最长100个字符", trigger: "blur" },
          ],
        },

        // 类目名称（后端直接返回 categoryName）
        categoryName: {
          label: "类目",
          minWidth: 120,
          addDisplay: false,
          editDisplay: false,
        },

        // 触达对象（后端直接给了中文：applicableObjectsName）
        applicableObjectsName: {
          label: "触达对象",
          minWidth: 150,
          addDisplay: false,
          editDisplay: false,
          // formatter: ({ value }) => (value || "").replace(/,/g, "、"),
        },

        // 新增时间（createTime）
        createTime: {
          label: "新增时间",
          minWidth: 170,
          type: "datetime",
          valueFormat: "YYYY-MM-DD HH:mm:ss",
          addDisplay: false,
          editDisplay: false,
        },
        // 发送方式名称（sendMethodName）
        sendMethodName: {
          label: "发送方式",
          minWidth: 120,
          addDisplay: false,
          editDisplay: false,
        },

        // 计划/实际发送时间（sendTime）
        sendTime: {
          label: "发送时间",
          minWidth: 170,
          type: "datetime",
          valueFormat: "YYYY-MM-DD HH:mm:ss",
          addDisplay: false,
          editDisplay: false,
        },

        // 最近编辑时间（updateTime）
        updateTime: {
          label: "最近编辑时间",
          minWidth: 170,
          type: "datetime",
          valueFormat: "YYYY-MM-DD HH:mm:ss",
          addDisplay: false,
          editDisplay: false,
        },
        // 操作人员
        updateName: {
          label: "操作人员",
          minWidth: 120,
          addDisplay: false,
          editDisplay: false,
        },
        // 发送状态名称（sendStatusName）
        sendStatusName: {
          label: "发送状态",
          width: 110,
          addDisplay: false,
          editDisplay: false,
          // 如果需要颜色可自定义 formatter
        },
        // 展示状态 0/1
        displayStatus: {
          label: "展示状态",
          minWidth: 120,
          display: false,
          dicData: [
            { label: "隐藏", value: 0 },
            { label: "展示", value: 1 },
          ],
        },
        // /* ---------------- 表单专用：所属类目（二级、三级） ----------------
        //  * 仅在新增/编辑弹窗里出现。选项由页面打开弹窗时远程注入。
        //  */
        // categoryLevel2Id: {
        //   label: "二级类目",
        //   type: "select",
        //   span: 24,
        //   listDisplay: false,
        //   dicData: [],
        //   dicProps: { label: "label", value: "value" },
        //   rules: [{ required: true, message: "请选择二级类目", trigger: "change" }],
        // },
        // categoryLevel3Id: {
        //   label: "三级类目",
        //   type: "select",
        //   span: 24,
        //   listDisplay: false,
        //   dicData: [],
        //   dicProps: { label: "label", value: "value" },
        //   rules: [{ required: true, message: "请选择三级类目", trigger: "change" }],
        // },

        /* --------- 可选：发送方式/时间（新增/编辑时用，不在列表显示） --------- */
        // sendMethod: {
        //   label: "发送方式",
        //   type: "radio",
        //   value: "01",
        //   span: 24,
        //   addDisplay: true,
        //   editDisplay: true,
        //   listDisplay: false,
        //   dicData: [
        //     { label: "立即发送", value: "01" },
        //     { label: "定时发送", value: "02" },
        //     { label: "手动发送", value: "03" },
        //   ],
        //   rules: [{ required: true }],
        // },
        // planSendTime: {
        //   label: "发送时间",
        //   type: "datetime",
        //   valueFormat: "YYYY-MM-DD HH:mm:ss",
        //   span: 24,
        //   addDisplay: true,
        //   editDisplay: true,
        //   listDisplay: false,
        //   display: ({ form }) => form.sendMethod === "02", // 仅定时发送时填写
        // },
      },
    })
  );

  return { searchOption, tableOption };
};
